<?php 
/**
 *  Por Federico Pisarello - SisDev Software (c) 2012 - Buenos Aires, Argentina.
 * 	fpisarello@sisdevsoft.com
 */

require("includes/funciones.inc.php");

function searchCarrerasEspeciales()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	
	if(isset($_REQUEST["idCarrera"])) {
		$DB = NewADOConnection('mysqlt');
		$DB->Connect();
		$DB->Execute("SET NAMES utf8;");
		//$DB->debug=true;
	
		$rsCarreras = $DB->Execute("SELECT * FROM carreras WHERE idCarrera = '".$_REQUEST["idCarrera"]."' AND state <> '$stateErase'");
		if($rsCarreras->EOF)
		 	$fecha = date('Ymd');
		else
			$fecha = $rsCarreras->fields('fecha');
	}
	else {
		if($_REQUEST['fecha'] == '')
			$fecha = date('Ymd');
		else
			$fecha = empaquetarFecha($_REQUEST['fecha']);
	}
		
	$datatables
		->select('especial.posicion')
		->from('especial')
		->join('users','especial.idUser = users.idUser')
		->select('users.userCompleteName, users.idUser, users.userLocalidad, especial.mtsPalomar, especial.mtsMinuto, especial.nroEquipo')
		->where('especial.fecha=', $fecha)
		->add_column('edit', '<img src="imagenes/details_open.png">');
		
	if(isset($_REQUEST['tipoCarrera']))
		$datatables->where("especial.tipoCarrera IN ('".$_REQUEST['tipoCarrera']."')");
	else
		$datatables->where("especial.tipoCarrera IN ('$tipoCarreraGeneral','$tipoCarreraFondo', '$tipoCarreraUnaPta')");

	echo $datatables->generate();
}

function searchCarrerasEquipos()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	
	if(isset($_REQUEST["idCarrera"])) {
		$DB = NewADOConnection('mysqlt');
		$DB->Connect();
		$DB->Execute("SET NAMES utf8;");
		//$DB->debug=true;
		
		$rsCarreras = $DB->Execute("SELECT * FROM carreras WHERE idCarrera = '".$_REQUEST["idCarrera"]."' AND state <> '$stateErase'");
		if($rsCarreras->EOF)
		 	$fecha = date('Ymd');
		else
			$fecha = $rsCarreras->fields('fecha');
	}
	else {
		if($_REQUEST['fecha'] == '')
			$fecha = date('Ymd');
		else
			$fecha = empaquetarFecha($_REQUEST['fecha']);
	}
	
	$datatables
		->select('equipos.posicion')
		->from('equipos')
		->join('users','equipos.idUser = users.idUser')
		->select('users.userCompleteName, users.idUser, users.userLocalidad, equipos.mtsPalomar, equipos.mtsMinuto, equipos.puntos, equipos.nroEquipo')
		->where('equipos.fecha=', $fecha)
		->add_column('edit', '<img src="imagenes/details_open.png">');
		
	if(isset($_REQUEST['tipoCarrera']))
		$datatables->where("equipos.tipoCarrera IN ('".$_REQUEST['tipoCarrera']."')");
	else
		$datatables->where("equipos.tipoCarrera IN ('$tipoCarreraGeneral','$tipoCarreraFondo')");

	echo $datatables->generate();
}

function searchCarreraEquiposDetalle()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	if(isset($_REQUEST["idCarrera"])) {		
		$rsCarreras = $DB->Execute("SELECT * FROM carreras WHERE idCarrera = '".$_REQUEST["idCarrera"]."' AND state <> '$stateErase'");
		if($rsCarreras->EOF)
		 	$fecha = date('Ymd');
		else
			$fecha = $rsCarreras->fields('fecha');
	}
	else {
		$fecha = empaquetarFecha($_REQUEST['fecha']);
	}
	
	$strSQL = "SELECT horaMarca, paloma, puntoCard, mtsPalomar, mtsMinuto FROM equipos_palomas ci
					INNER JOIN carrera_ptos cp ON cp.idCarrera = ci.idCarrera And cp.idPto = ci.puntoCard
					INNER JOIN carreras c ON ci.idCarrera = c.idCarrera
					WHERE c.fecha = '".$fecha."' AND ci.idUser = ".$_REQUEST['idUser']." AND c.state <> '$stateErase' AND nroEquipo = ".$_REQUEST['nroEquipo']."
					GROUP BY idUser, puntoCard";
	
	$rsEquipos = $DB->Execute($strSQL);
	
	$strOutput = "<tr><td>Pto. Cardinal</td><td>Paloma</td><td>Hora Marca</td><td>Mts.Palo</td><td>Mts/Minu</td></tr>";
	
	while(!$rsEquipos->EOF){
		$strOutput .= "<tr><td>".$rsEquipos->fields("puntoCard")."</td><td>".$rsEquipos->fields("paloma")."</td><td>".$rsEquipos->fields("horaMarca")."</td><td>".$rsEquipos->fields("mtsPalomar")."</td><td>".$rsEquipos->fields("mtsMinuto")."</td></tr>";
		$rsEquipos->MoveNext();
	}
	return $strOutput;
}

function searchCarreraEspecialesDetalle()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	if(isset($_REQUEST["idCarrera"])) {		
		$rsCarreras = $DB->Execute("SELECT * FROM carreras WHERE idCarrera = '".$_REQUEST["idCarrera"]."' AND state <> '$stateErase'");
		if($rsCarreras->EOF)
		 	$fecha = date('Ymd');
		else
			$fecha = $rsCarreras->fields('fecha');
	}
	else {
		$fecha = empaquetarFecha($_REQUEST['fecha']);
	}
	
	$rsCarreras = $DB->Execute("SELECT * FROM carreras WHERE fecha = '".$fecha."' AND state <> '$stateErase'");
	
	$strSQL = "SELECT horaMarca, paloma, puntoCard, mtsPalomar, mtsMinuto FROM especial_palomas ci
					INNER JOIN carrera_ptos cp ON cp.idCarrera = ci.idCarrera And cp.idPto = ci.puntoCard
					INNER JOIN carreras c ON ci.idCarrera = c.idCarrera
					WHERE c.fecha = '".$fecha."' AND ci.idUser = ".$_REQUEST['idUser']." AND c.state <> '$stateErase' AND nroEquipo = ".$_REQUEST['nroEquipo'];
	
	if($rsCarreras->fields('tipoCarrera') != $tipoCarreraUnaPta)
		$strSQL .= " GROUP BY idUser, puntoCard";
	
	$rsEquipos = $DB->Execute($strSQL);
	
	$strOutput = "<tr><td>Pto. Cardinal</td><td>Paloma</td><td>Hora Marca</td><td>Mts.Palo</td><td>Mts/Minu</td></tr>";
	
	while(!$rsEquipos->EOF){
		$strOutput .= "<tr><td>".$rsEquipos->fields("puntoCard")."</td><td>".$rsEquipos->fields("paloma")."</td><td>".$rsEquipos->fields("horaMarca")."</td><td>".$rsEquipos->fields("mtsPalomar")."</td><td>".$rsEquipos->fields("mtsMinuto")."</td></tr>";
		$rsEquipos->MoveNext();
	}
	return $strOutput;
}


function searchCarrerasAnilloPlata()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	if($_REQUEST['tipo'] == $tTodas) {
		$strSQL = "SELECT users.idUser, users.userCompleteName, carreras_items.paloma, SUM(puntos) AS sumaPuntos, COUNT(puesto) AS puesto
					FROM users
					INNER JOIN carreras_items ON users.idUser = carreras_items.idUser
					INNER JOIN carreras ON carreras_items.idCarrera = carreras.idCarrera
					WHERE
						users.userState <> '$stateErase' AND
						carreras_items.puesto <> 0 AND
						carreras.state = '$statePublicado' AND
						carreras.tipoCarrera IN ('$tipoCarreraGeneral','$tipoCarreraFondo', '$tipoCarreraUnaPta') AND
						LEFT(carreras.fecha,4) ='".getCurrentYear()."' 
					GROUP BY users.idUser, carreras_items.paloma";
	}
	else
	{
		$strSQL = "SELECT users.idUser, users.userCompleteName, carreras_items.paloma, SUM(puntos) AS sumaPuntos, COUNT(puesto) AS puesto
					FROM users
					INNER JOIN carreras_items ON users.idUser = carreras_items.idUser
					INNER JOIN carreras ON carreras_items.idCarrera = carreras.idCarrera AND carreras_items.tipo = carreras.tipoPaloma
					WHERE
						users.userState <> '$stateErase' AND
						carreras.tipoPaloma ='".$_REQUEST['tipo']."' AND 
						carreras_items.puesto <> 0 AND
						carreras.state = '$statePublicado' AND
						carreras.tipoCarrera IN ('$tipoCarreraGeneral','$tipoCarreraFondo', '$tipoCarreraUnaPta') AND
						LEFT(carreras.fecha,4) ='".getCurrentYear()."' 
					GROUP BY users.idUser, carreras_items.paloma";
	}
	
	$datatables = new Datatables();
	
	$datatables
		->select('idUser, userCompleteName, paloma, sumaPuntos, puesto')
		->from('('.$strSQL.') anilloPlata');
				
	return $datatables->generate();
	
}

function searchCampeonatoPichones()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	
	$strSQL = "SELECT @rownum := @rownum + 1 As Pos, idUser, userCompleteName, sumaPuntos FROM ( 
  					SELECT users.idUser, users.userCompleteName, SUM(Puntos) sumaPuntos FROM users 
					INNER JOIN carreras_items ON users.idUser = carreras_items.idUser 
					INNER JOIN carreras ON carreras_items.idCarrera = carreras.idCarrera 
        		WHERE 
	        		carreras_items.tipo ='".substr($tipoPichon,0,1)."' AND 
					carreras.state ='$statePublicado' AND carreras.tipoCarrera IN ('$tipoCarreraGeneral', '$tipoCarreraUnaPta') AND
					LEFT(carreras.fecha,4) = '".getCurrentYear()."'
				GROUP BY users.idUser 
        		ORDER BY SUM(Puntos) DESC 
				) c, (SELECT @rownum:=0) r";
	
	$datatables
		->select('Pos, idUser, userCompleteName, sumaPuntos')
		->from('('.$strSQL.') campeonatoPichones');
		
	return $datatables->generate();
}

function searchCampeonatoMixtas()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	
	$strSQL = "SELECT @rownum := @rownum + 1 As Pos, idUser, userCompleteName, sumaPuntos FROM ( 
  					SELECT users.idUser, users.userCompleteName, SUM(Puntos) sumaPuntos FROM users 
					INNER JOIN carreras_items ON users.idUser = carreras_items.idUser 
					INNER JOIN carreras ON carreras_items.idCarrera = carreras.idCarrera 
        		WHERE 
	        		carreras_items.tipo ='".substr($tipoAdulta,0,1)."' AND 
					carreras.state ='$statePublicado' AND carreras.tipoCarrera IN ('$tipoCarreraGeneral', '$tipoCarreraUnaPta') AND
					LEFT(carreras.fecha,4) = '".getCurrentYear()."'
				GROUP BY users.idUser 
        		ORDER BY SUM(Puntos) DESC 
				) c, (SELECT @rownum:=0) r";
	
	$datatables
		->select('Pos, idUser, userCompleteName, sumaPuntos')
		->from('('.$strSQL.') campeonatoMixtas');
		
	return $datatables->generate();
}

function searchCampeonatoGral()
{	
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables(); 
	
	//Query Equipos
	$strSQLEquipos = "SELECT u.idUser, u.userCompleteName, SUM(puntos) AS sumaPuntos FROM equipos e 
				INNER JOIN users u ON u.idUser = e.idUser 
				INNER JOIN carreras c ON e.fecha = c.fecha
				WHERE c.tipoCarrera IN ('$tipoCarreraGeneral', '$tipoCarreraUnaPta') AND
					c.state <> '$stateErase' AND
					LEFT(c.fecha,4) = '".getCurrentYear()."'
				GROUP BY u.idUser";
	
	//Query Carreras
	$strSQLCarreras = "SELECT u.idUser, userCompleteName, SUM(puntos) AS sumaPuntos FROM carreras_items ci 
				INNER JOIN users u ON u.idUser = ci.idUser 
				INNER JOIN carreras c ON ci.idCarrera = c.idCarrera
				WHERE c.state = '$statePublicado' AND 
					c.tipoCarrera IN ('$tipoCarreraGeneral', '$tipoCarreraUnaPta') AND
					LEFT(c.fecha,4) = '".getCurrentYear()."' 
				GROUP BY u.idUser";
				
	$strSQL = "SELECT @rownum := @rownum + 1 As Pos, idUser, userCompleteName, Puntos FROM (SELECT idUser, userCompleteName, SUM(sumaPuntos) AS Puntos FROM (".$strSQLEquipos." UNION ALL ".$strSQLCarreras.") General GROUP BY idUser) ConPosicion, (SELECT @rownum:=0) r ORDER BY Puntos DESC";
	
	$datatables
		->select('Pos, idUser, userCompleteName, Puntos')
		->from('('.$strSQL.') campeonatoGeneral');

	echo $datatables->generate();

}

function searchCampeonatoFondo()
{	
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables(); 
	
	//Query Equipos
	$strSQLEquipos = "SELECT u.idUser, u.userCompleteName, SUM(puntos) AS sumaPuntos FROM equipos e 
				INNER JOIN users u ON u.idUser = e.idUser 
				INNER JOIN carreras c ON e.fecha = c.fecha
				WHERE c.tipoCarrera = '$tipoCarreraFondo' AND
					c.state <> '$stateErase' AND
					LEFT(c.fecha,4) = '".getCurrentYear()."'
				GROUP BY u.idUser";
	
	//Query Carreras
	$strSQLCarreras = "SELECT u.idUser, userCompleteName, SUM(puntos) AS sumaPuntos FROM carreras_items ci 
				INNER JOIN users u ON u.idUser = ci.idUser 
				INNER JOIN carreras c ON ci.idCarrera = c.idCarrera
				WHERE c.state = '$statePublicado' AND 
					c.tipoCarrera = '$tipoCarreraFondo' AND
					LEFT(c.fecha,4) = '".getCurrentYear()."'
				GROUP BY u.idUser";
				
	$strSQL = "SELECT @rownum := @rownum + 1 As Pos, idUser, userCompleteName, Puntos FROM (SELECT idUser, userCompleteName, SUM(sumaPuntos) AS Puntos FROM (".$strSQLEquipos." UNION ALL ".$strSQLCarreras.") General GROUP BY idUser) ConPosicion, (SELECT @rownum:=0) r ORDER BY Puntos DESC";
	
	$datatables
		->select('Pos, idUser, userCompleteName, Puntos')
		->from('('.$strSQL.') campeonatoFondo');

	echo $datatables->generate();

}

function carrerasPtoCardinal()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
		
	$datatables = new Datatables();
	
	if(isset($_REQUEST["idCarrera"]))
		$idCarrera = $_REQUEST["idCarrera"];
	else {
		if(isset($_REQUEST["fechaCarrera"])) {
			$rsCarreras = $DB->Execute("SELECT * FROM carreras WHERE fecha = '".empaquetarFecha($_REQUEST["fechaCarrera"])."' AND state <> '$stateErase'");
			if($rsCarreras->EOF)
			 	$idCarrera = 0;
			else
				$idCarrera = $rsCarreras->fields('idCarrera');
		}
		else
			$idCarrera = 0;
	} 
	
	$datatables
			->select('idCarreraItem, userCompleteName, tipo, paloma, horaMarca, puntos, puesto, especial, mtsMinuto, mtsPalomar')
			->edit_column('tipo', '$1', 'devuelveTipoPaloma(tipo)') // php functions
			->edit_column('horaMarca','$1','formatoHora(horaMarca)') // php functions
			->from('carreras_items')
			->where("puntoCard = '".$_REQUEST["carreraPtoCard"]."'")
			->where("carreras.idCarrera = ".$idCarrera)
			->join('carreras', 'carreras_items.idCarrera = carreras.idCarrera', 'inner')
			->join('users', 'carreras_items.idUser = users.idUser', 'inner')
			->select('description');
		
	return $datatables->generate();
}

function devuelveTipoPaloma($tipoPaloma)
{
	require("includes/constants.php");
	
	if($tipoPaloma == 'P')
		return $tipoPichon;
	else if($tipoPaloma == 'A')
		return $tipoAdulta;
}

function devuelveTipoCarrera()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
		
	$strSQL = "SELECT * FROM carreras WHERE idCarrera = ".$_REQUEST['idCarrera'];
	$rsCarreras = $DB->Execute($strSQL);
	
	if($rsCarreras->EOF)
		$tipoCarreta->tipoCarrera = $tipoCarreraGeneral;
	else
		$tipoCarreta->tipoCarrera = $rsCarreras->fields('tipoCarrera');
	
	return json_encode($tipoCarreta);
}

function devuelveCarreras()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	if(!isset($_REQUEST['anno']))
		$anno = getCurrentYear();
	else
		$anno = $_REQUEST['anno'];

	$strSQL = "SELECT * FROM carreras WHERE state = '$statePublicado' AND LEFT(carreras.fecha,4) = '".$anno."' AND tipoCarrera IN ('$tipoCarreraGeneral', '$tipoCarreraFondo', '$tipoCarreraUnaPta')";
	$rsCarreras = $DB->Execute($strSQL);
	
	if($rsCarreras->EOF)
		return json_encode(array());
	else
	{
		$i=0;
		while(!$rsCarreras->EOF){
			$arrCarreras[$i]['idCarrera'] = $rsCarreras->fields(0);
			$arrCarreras[$i++]['description'] = desempaquetarFecha($rsCarreras->fields(2))." - ".$rsCarreras->fields(1);
			$rsCarreras->MoveNext();
		}
	}
	return json_encode($arrCarreras);	
}

function devuelveCarrerasExtra()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	if(!isset($_REQUEST['anno']))
		$anno = getCurrentYear();
	else
		$anno = $_REQUEST['anno'];

	$strSQL = "SELECT * FROM carreras WHERE state = '$statePublicado' AND LEFT(carreras.fecha,4) = '".$anno."' AND tipoCarrera IN ('$tipoCarreraExtra')";
	$rsCarreras = $DB->Execute($strSQL);
	
	if($rsCarreras->EOF)
		return json_encode(array());
	else
	{
		$i=0;
		while(!$rsCarreras->EOF){
			$arrCarreras[$i]['idCarrera'] = $rsCarreras->fields(0);
			$arrCarreras[$i++]['description'] = desempaquetarFecha($rsCarreras->fields(2))." - ".$rsCarreras->fields(1);
			$rsCarreras->MoveNext();
		}
	}
	return json_encode($arrCarreras);	
}

function getCurrentYear()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$strSQL = "SELECT * FROM config ORDER BY idConfig DESC";
	$rsConfig = $DB->Execute($strSQL);
	
	return $rsConfig->fields('anno');
}

function getAnnos()
{
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsAnno = $DB->Execute("SELECT idConfig, anno FROM config ORDER BY anno DESC");
	
	$i=0;
	while(!$rsAnno->EOF){
		$arrAnno->data[$i]['idConfig'] = $rsAnno->fields(0);
		$arrAnno->data[$i++]['anno'] = $rsAnno->fields(1);
		$rsAnno->MoveNext();
	}
	
	return json_encode($arrAnno->data);
}

switch($_REQUEST['actionOfForm'])
{
	case "searchCarrerasAnilloPlata":
		echo searchCarrerasAnilloPlata();
		break;
	case "getAnnos":
		echo getAnnos();
		break;
		
	case "searchCarrerasEquipos":
		echo searchCarrerasEquipos();
		break;
		
	case "searchCarrerasEspeciales":
		echo searchCarrerasEspeciales();
		break;
		
	case "searchCarreraEquiposDetalle":
		echo searchCarreraEquiposDetalle();
		break;
		
	case "searchCarreraEspecialesDetalle":
		echo searchCarreraEspecialesDetalle();
		break;
		
	case "searchCampeonatoPichones":
		echo searchCampeonatoPichones();
		break;
		
	case "searchCampeonatoMixtas":
		echo searchCampeonatoMixtas();
		break;
		
	case "searchCampeonatoGral":
		echo searchCampeonatoGral();
		break;
		
	case "searchCampeonatoFondo":
		echo searchCampeonatoFondo();
		break;
		
	case "carrerasPtoCardinal":
		echo carrerasPtoCardinal();
		break;
		
	case devuelveTipoCarrera:
		echo devuelveTipoCarrera();
		break;

	case "devuelveCarreras":
		echo devuelveCarreras();
		break;
		
	case "devuelveCarrerasExtra":
		echo devuelveCarrerasExtra();
		break;
}
?>
